package cn.ac.iscas.service.common;

import cn.ac.iscas.domain.job.*;
import cn.ac.iscas.domain.response.job.JobSearchResponse;
import com.iscas.datasong.lib.common.DataSongException;


import java.util.List;

/**
 * Created by ISCAS on 2017/10/27.
 */
public interface IJobService {

	/**
	 * 查询任务列表
	 * @param jobSearch
	 * @return
	 */
	JobSearchResponse searchJob(JobSearch jobSearch) throws DataSongException;


	/**
	 * 根据id删除任务 delete
	 * @param id 任务唯一id
	 * @return 返回结果
	 */
	boolean deleteJob(String id) throws DataSongException;

	/**
	 * 批量删除
	 * @param id
	 * @return
	 * @throws DataSongException
	 */
	boolean deleteJob(List<String> id) throws DataSongException;

	/**
	 * 根据id号获取一个job的详情
	 * @param id 任务唯一id
	 * @return
	 */
	Job getJob(String id) throws DataSongException;

	/**
	 * 任务校验 post
	 * @return
	 */
	boolean validateJob(Job job) throws DataSongException;

	/**
	 * 任务执行 post
	 * @return
	 */
	String executeJob(Job job) throws DataSongException;

	/**
	 * 任务停止 post
	 * @return
	 */
	boolean stopJob(List<String> jobIds) throws DataSongException;

	/**
	 * 批量执行任务
	 * @param jobIds
	 * @return
	 * @throws DataSongException
	 */
	boolean executeJob(List<String> jobIds) throws DataSongException;
	/**
	 * 获取任务日志
	 * @param id
	 * @return
	 * @throws DataSongException
	 */
	List<JobLog> getJobLog(String id) throws DataSongException;

	/**
	 * 任务保存 post
	 * @return 返回job的唯一id
	 */
	String saveJob(Job job) throws DataSongException;


	/**
	 * 任务保存 post
	 * @return 返回job的唯一id
	 */
	List<String> saveJob(List<Job> jobs) throws DataSongException;

	/**
	 * 任务清空
	 * @param id
	 * @return
	 */
	String clearJob(String id) throws DataSongException;


//	/**
//	 * 获取初始列
//	 * @param job
//	 * @return
//	 * @throws DataSongException
//	 */
//	ReaderColumResponse analyzeInitialColumn(Job job) throws DataSongException;
//
//	/**
//	 * 获取组件数据输入列
//	 * @param cId 组件id
//	 * @return
//	 */
//	List<EtlColumn> analyzeInputColumn(Job job, String cId) throws DataSongException;

	/**
	 * 任务保存 post
	 * @return 返回job的唯一id
	 */
	boolean updateJobStatus(String id, JobStatus jobStatus) throws DataSongException;

}
